package com.atguigu.singleton.type4;

public class SingletonTest04 {
    public static void main(String[] args) {
        System.out.println("懒汉式2，线程安全");
        Singleton instance = Singleton.getInstance();
        Singleton instance1 = Singleton.getInstance();
        System.out.println(instance);
        System.out.println(instance == instance1);
        System.out.println(instance.hashCode() +":"+instance1.hashCode());
    }
}

//懒汉式（线程安全）
/*
优缺点说明：
1）解决了线程不安全
2）效率太低了，每个线程在想获得类实例时候，执行getInstance()方法都要进行同步。
而其实这个方法只执行一次实例化代码就够了。
后面的想获得该类实例，直接return就行了。方法进行同步效率太低
3）结论：不推荐使用这种方式

 */

class Singleton{
    private static Singleton instance;

    private Singleton(){}

    //提供一个静态的公有方法，加入同步处理代码，解决线程安全问题
    //即懒汉式
    public static synchronized Singleton getInstance(){
        if(instance == null){
            instance = new Singleton();
        }
        return instance;
    }
}
